home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / fortran / toolpack.000 / toolpack / toolpack1.2 / tools / istyf / ISTYF.MAC.f
Encoding:
Text File  |  1989-03-04  |  9.0 KB  |  247 lines

  1. C---------------------------------------------------------
  2. C    TOOLPACK/1    Release: 3.1
  3. C---------------------------------------------------------
  4. C---------------------------------------------------------
  5. C    TOOLPACK/1    Release: 2.4
  6. C---------------------------------------------------------
  7. C---------------------------------------------------------
  8. C    TOOLPACK/1    Release: 2.4
  9. C---------------------------------------------------------
  10. C---------------------------------------------------------
  11. C    TOOLPACK/1    Release: 2.4
  12. C---------------------------------------------------------
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. C                                   parameter length
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. C following are for ZYCSDT (Canonicalise Symbol Data Types)
  32.         PROGRAM ISTYF
  33.  
  34.         INTEGER TREPTH(81),SYMPTH(81),CMIPTH(81),
  35.      +          TKOPTH(81),CMOPTH(81),CMTPTH(81),JUNK,
  36.      +          IODTRE,IODSYM,IODCMI,IODCMT,IODTKO,IODCMO,TKDESC
  37.  
  38.         INTEGER OPEN,CREATE,GETARG,ZYINCI,ZTKPTI
  39.         EXTERNAL OPEN,CREATE,ERROR,ZINIT,ZQUIT,ZYINSY,ZYINPT,REMARK,
  40.      +           GETARG,ZYINCI,ZTKPTI
  41.  
  42.         CALL ZINIT
  43.  
  44.         IF (GETARG(1,TREPTH,81).EQ.-100) CALL YFARGS(1,TREPTH)
  45.         IF (GETARG(2,SYMPTH,81).EQ.-100) CALL YFARGS(2,SYMPTH)
  46.         IF (GETARG(3,CMIPTH,81).EQ.-100) CALL YFARGS(3,CMIPTH)
  47.         IF (GETARG(4,CMTPTH,81).EQ.-100) CALL YFARGS(4,CMTPTH)
  48.         IF (GETARG(5,TKOPTH,81).EQ.-100) CALL YFARGS(5,TKOPTH)
  49.         IF (GETARG(6,CMOPTH,81).EQ.-100) CALL YFARGS(6,CMOPTH)
  50.  
  51.         IODTRE=OPEN(TREPTH,0)
  52.         IF (IODTRE.EQ.-1) CALL ERROR('Can''t open parse tree')
  53.         IODSYM=OPEN(SYMPTH,0)
  54.         IF (IODSYM.EQ.-1) CALL ERROR('Can''t open symbol table')
  55.         IODCMI=OPEN(CMIPTH,0)
  56.         IF (IODCMI.EQ.-1) CALL ERROR('Can''t open comment index')
  57.         IODCMT=OPEN(CMTPTH,0)
  58.         IF (IODCMT.EQ.-1) CALL ERROR('Can''t open comment file')
  59.         IODTKO=CREATE(TKOPTH,1)
  60.         IF (IODTKO.EQ.-1) CALL ERROR('Can''t create token stream')
  61.         IODCMO=CREATE(CMOPTH,1)
  62.         IF (IODCMO.EQ.-1) CALL ERROR('Can''t create comment stream')
  63.         TKDESC=ZTKPTI(1,IODTKO,IODCMO)
  64.  
  65.         CALL ZYINPT(IODTRE)
  66.         CALL ZYINSY(IODSYM)
  67.         IF (ZYINCI(IODCMI).NE.-2) CALL ERROR('ZYINCI failed')
  68.  
  69.         CALL PROFIL(IODCMT,TKDESC)
  70.  
  71.         CALL REMARK('[ISTYF Normal Termination]')
  72.         CALL ZQUIT(-2)
  73.  
  74.         END
  75. C ----------------------------------------------------------------------
  76. C
  77. C       Y F A R G S   -   Get a YF command argument
  78. C
  79.  
  80.         SUBROUTINE YFARGS(NUMBER,PATH)
  81.         INTEGER NUMBER,PATH(81)
  82.  
  83.         INTEGER ZGTCMD
  84.         EXTERNAL ZGTCMD,ZPRMPT
  85.  
  86.         INTEGER I,PROMPT(24,6)
  87.  
  88.         SAVE PROMPT
  89.  
  90. C "Input parse tree: "
  91. C "Input symbol table: "
  92. C "Input comment index: "
  93. C "Input comment stream: "
  94. C "Output token stream: "
  95. C "Output comment stream: "
  96.  
  97.         DATA (PROMPT(I,1),I=1,19)/73,110,112,117,116,32,112,
  98.      +97,114,115,101,32,116,114,101,101,58,32,129/,
  99.      +       (PROMPT(I,2),I=1,21)/73,110,112,117,116,32,115,
  100.      +121,109,98,111,108,32,116,97,98,108,101,58,
  101.      +32,129/,
  102.      +       (PROMPT(I,3),I=1,22)/73,110,112,117,116,32,99,
  103.      +111,109,109,101,110,116,32,105,110,100,101,120,
  104.      +58,32,129/,
  105.      +       (PROMPT(I,4),I=1,23)/73,110,112,117,116,32,99,
  106.      +111,109,109,101,110,116,32,115,116,114,101,97,109,
  107.      +58,32,129/,
  108.      +       (PROMPT(I,5),I=1,22)/79,117,116,112,117,116,32,
  109.      +116,111,107,101,110,32,115,116,114,101,97,109,
  110.      +58,32,129/,
  111.      +       (PROMPT(I,6),I=1,24)/79,117,116,112,117,116,32,
  112.      +99,111,109,109,101,110,116,32,115,116,114,101,97,
  113.      +109,58,32,129/
  114.  
  115.         CALL ZPRMPT(PROMPT(1,NUMBER))
  116.         IF (ZGTCMD(PATH,0).EQ.-1) CALL ERROR('YFARGS: I/O ERROR')
  117.  
  118.         END
  119. C ----------------------------------------------------------------------
  120. C
  121. C       P R O F I L   -   Process files
  122. C
  123.  
  124.         SUBROUTINE PROFIL(IODCMT,TKDESC)
  125.         INTEGER IODCMT,TKDESC
  126.  
  127. C---------------------------------------------------------
  128. C    TOOLPACK/1    Release: 2.4
  129. C---------------------------------------------------------
  130. C
  131. C  TKLAST = LAST TOKEN NUMBER
  132. C
  133.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  134.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  135.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  136.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  137.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  138.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  139.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  140.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  141.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  142.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  143.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  144.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  145.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  146.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  147.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  148.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  149.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  150.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  151.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  152.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  153.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  154.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  155.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  156.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  157.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  158.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  159.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  160.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  161.  
  162.  
  163.         INTEGER ZYDOWN,ZYNEXT,ZYROOT
  164.         EXTERNAL ZYDOWN,ZYNEXT,ZYROOT,ZTOKWR
  165.  
  166.         SAVE
  167.  
  168.         INTEGER PTR,DUMMY(2)
  169.  
  170.         DATA DUMMY(1)/129/
  171.  
  172.         PTR=ZYDOWN(ZYROOT())
  173.  
  174.  100    IF (PTR.GT.0) THEN
  175.             CALL PROPU(PTR,IODCMT,TKDESC)
  176.             PTR=ZYNEXT(PTR)
  177.             GO TO 100
  178.         END IF
  179.         CALL ZTOKWR(TZEOF,0,DUMMY,TKDESC)
  180.  
  181.         END
  182. C ----------------------------------------------------------------------
  183. C
  184. C       P R O P U   -   Process Program-Unit
  185. C
  186.  
  187.         SUBROUTINE PROPU(PUROOT,IODCMT,TKDESC)
  188.         INTEGER PUROOT,IODCMT,TKDESC
  189.  
  190.         INTEGER SPTR,SNUM,BUFF(134)
  191.  
  192.         INTEGER ZYDOWN,ZYNEXT,ZYGTCM,ZYGNCM,LENGTH
  193.         EXTERNAL ZYDOWN,ZYNEXT,ZYGTCM,ZYGNCM,LENGTH,YSTMT,ZTOKWR
  194.  
  195. C---------------------------------------------------------
  196. C    TOOLPACK/1    Release: 2.4
  197. C---------------------------------------------------------
  198. C
  199. C  TKLAST = LAST TOKEN NUMBER
  200. C
  201.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  202.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  203.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  204.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  205.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  206.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  207.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  208.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  209.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  210.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  211.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  212.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  213.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  214.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  215.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  216.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  217.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  218.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  219.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  220.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  221.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  222.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  223.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  224.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  225.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  226.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  227.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  228.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  229.  
  230.  
  231.         SAVE
  232.  
  233.         DATA SNUM/1/
  234.  
  235.         SPTR=ZYDOWN(PUROOT)
  236.  
  237.  100    IF (ZYGTCM(IODCMT,SNUM,BUFF).EQ.-2) THEN
  238.  200        CALL ZTOKWR(TCMMNT,LENGTH(BUFF),BUFF,TKDESC)
  239.             IF (ZYGNCM(IODCMT,BUFF).EQ.-2) GO TO 200
  240.         END IF
  241.         CALL YSTMT(SPTR,TKDESC)
  242.         SNUM=SNUM+1
  243.         SPTR=ZYNEXT(SPTR)
  244.         IF (SPTR.NE.0) GOTO 100
  245.  
  246.         END
  247.